package fr.uniscol.siecle.readers;

import org.jdom2.Document;
import org.jdom2.Element;

import fr.uniscol.siecle.model.Academie;
import fr.uniscol.siecle.model.Commune;
import fr.uniscol.siecle.model.Departement;
import fr.uniscol.siecle.model.FichierExportSiecle;
import fr.uniscol.siecle.model.FichierExportSiecleCommuns;
import fr.uniscol.siecle.model.FichierExportSiecleGeographie;
import fr.uniscol.siecle.model.Pays;

public class FichierSIECLEGeographieReader extends FichierSIECLEReader {

	public FichierExportSiecle readFromDOM(Document dom) {
		
		FichierExportSiecleGeographie geo = new FichierExportSiecleGeographie();
		
		geo.readParametresFromDOM(dom);
		
		Element eDonnees = dom.getRootElement().getChild("DONNEES");
		Element ePays = eDonnees.getChild("PAYS_NATIONALITES");
		Element eDepartements = eDonnees.getChild("DEPARTEMENTS");
		Element eCommunes = eDonnees.getChild("COMMUNES");
		
		Pays pays = null;
		Departement dep = null;
		Commune com = null;		
		
		for(Element ep : ePays.getChildren()){
			pays = new Pays(Integer.parseInt(ep.getAttributeValue("CODE_PAYS")), ep.getChildText("LIBELLE_LONG"));
			
			geo.getPays().add(pays);
		}
		
		for(Element ed : eDepartements.getChildren()){
			dep = new Departement(ed.getAttributeValue("CODE_DEPARTEMENT_INSEE"), ed.getChildText("LIBELLE_LONG"));
			dep.setAcademie(new Academie(ed.getChildText("CODE_ACADEMIE"), ""));
			geo.getDepartements().add(dep);
		}
		
		for(Element ec : eCommunes.getChildren()){
			com = new Commune(ec.getAttributeValue("CODE_COMMUNE_INSEE"), ec.getChildText("LIBELLE_LONG"));
			
			dep = geo.getDepartement(ec.getChildText("CODE_DEPARTEMENT_INSEE"));
			com.setDepartement(dep);
			
			geo.getCommunes().add(com);
		}
		
		return geo;
	}
}
